from enum import Enum


class EmploymentStatus(Enum):
    FULL_TIME = 1
    PART_TIME = 2
    UNEMPLOYED = 3
    NA = 4


class PrimaryInsured(Enum):
    CLIENT = 1
    CLIENT_SPOUSE = 2
    CLIENT_PARENT = 3
    OTHER = 4


class PreferredLanguageChoices(Enum):
    CHINESE = 'zh'
    ENGLISH = 'en'
    JAPANESE = 'ja'
    KOREAN = 'ko'
    HINDI = 'hi'
    SPANISH = 'es'
    ARABIC = 'ar'
    MALAY = 'ms'
    RUSSIAN = 'ru'
    BENGALI = 'bn'
    PORTUGUESE = 'pt'
    FRENCH = 'fr'
    VIETNAMESE = 'vi'
    OTHER = 'ot'

class RelationshipStatus(Enum):
    MARRIED = 1
    SINGLE = 2
    DIVORCED = 3
    OTHER = 4


class ClientStatusChoices(Enum):
    ACTIVE = 1
    INACTIVE = 2
    PENDING = 3


class MessagingStatusChoices(Enum):
    ACTIVE = 1
    INACTIVE = 2


class RaceChoices(Enum):
    AMERICAN_INDIAN = 1
    BLACK = 2
    MIDDLE_EAST = 3
    WHITE = 4
    ASIAN = 5
    HISPANIC = 6
    NATIVE_HAWAIIAN = 7
    UNSPECIFIED = 8


class GenderChoices(Enum):
    UNKNOWN = 1
    MALE = 2
    FEMALE = 3
    NONBINARY = 4
    TRANSGENDER = 5


class ClientLegalGuardian(Enum):
    LEGAL_GUARDIAN = 1
    PARENT = 2
    FAMILY_MEMBER = 3
    OTHER = 4


class InsuranceTypes(Enum):
    PRIMARY = 1
    SECONDARY = 2
    OTHER = 3


class InsurancePayer(Enum):
    CIGNA_62308 = 1
    BLUE_SHIELD_OF_CALIFORNIA_940360524 = 2
    AETNA_HEALTHCARE_60054 = 3


class ClientBillingType(Enum):
    SELF_PAY = 1
    INSURANCE = 2


class ClientType(Enum):
    INDIVIDUAL = 1
    COUPLE = 2
    GROUP = 3


class InsurancePayer(Enum):
    CIGNA_62308 = 1
    BLUE_SHIELD_OF_CALIFORNIA_940360524 = 2
    AETNA_HEALTHCARE_60054 = 3


GENDER_CHOICES = (
    (GenderChoices.UNKNOWN.value, 'unknown'),
    (GenderChoices.MALE.value, 'male'),
    (GenderChoices.FEMALE.value, 'female'),
    (GenderChoices.NONBINARY.value, 'non-binary'),
    (GenderChoices.TRANSGENDER.value, 'transgender')
)

RACE_CHOICES = (
    (RaceChoices.UNSPECIFIED.value, 'Unspecified'),
    (RaceChoices.AMERICAN_INDIAN.value, 'American Indian/Alaska Native'),
    (RaceChoices.ASIAN.value, 'Asian'),
    (RaceChoices.BLACK.value, 'Black or African American, not of Hispanic origin'),
    (RaceChoices.HISPANIC.value, 'Hispanic/Latin'),
    (RaceChoices.MIDDLE_EAST.value, 'Middle Eastern/ North African'),
    (RaceChoices.WHITE.value, 'White'),
    (RaceChoices.NATIVE_HAWAIIAN.value, 'Native Hawaiian/Other Pacific Islander')
)

CLIENT_STATUS_CHOICES = (
    (ClientStatusChoices.ACTIVE.value, 'active'),
    (ClientStatusChoices.INACTIVE.value, 'inactive'),
    (ClientStatusChoices.PENDING.value, 'pending')
)

MESSAGING_STATUS_CHOICES = (
    (MessagingStatusChoices.ACTIVE.value, 'active'),
    (MessagingStatusChoices.INACTIVE.value, 'inactive')
)

RELATIONSHIP_STATUS = (
    (RelationshipStatus.MARRIED.value, 'married'),
    (RelationshipStatus.SINGLE.value, 'single'),
    (RelationshipStatus.DIVORCED.value, 'divorced'),
    (RelationshipStatus.OTHER.value, 'other')
)

EMPLOYMENT_STATUS = (
    (EmploymentStatus.FULL_TIME.value, 'Full-Time'),
    (EmploymentStatus.PART_TIME.value, 'Part-Time'),
    (EmploymentStatus.UNEMPLOYED.value, 'Unemployed'),
    (EmploymentStatus.NA.value, 'N/A')
)

PREFERRED_LANGUAGE_CHOICES = (
    (PreferredLanguageChoices.CHINESE.value, 'Chinese'),
    (PreferredLanguageChoices.ENGLISH.value, 'English'),
    (PreferredLanguageChoices.JAPANESE.value, 'Japanese'),
    (PreferredLanguageChoices.KOREAN.value, 'Korean'),
    (PreferredLanguageChoices.HINDI.value, 'Hindi'),
    (PreferredLanguageChoices.SPANISH.value, 'Spanish'),
    (PreferredLanguageChoices.ARABIC.value, 'Arabic'),
    (PreferredLanguageChoices.MALAY.value, 'Malay'),
    (PreferredLanguageChoices.RUSSIAN.value, 'Russian'),
    (PreferredLanguageChoices.BENGALI.value, 'Bengali'),
    (PreferredLanguageChoices.PORTUGUESE.value, 'Portuguese'),
    (PreferredLanguageChoices.FRENCH.value, 'French'),
    (PreferredLanguageChoices.VIETNAMESE.value, 'Vietnamese'),
    (PreferredLanguageChoices.OTHER.value, 'Other')
)

CLIENT_GUARDIAN_CHOICE = (
    (ClientLegalGuardian.LEGAL_GUARDIAN.value, 'Legal Guardian'),
    (ClientLegalGuardian.PARENT.value, 'Parent'),
    (ClientLegalGuardian.FAMILY_MEMBER.value, 'Family Member'),
    (ClientLegalGuardian.OTHER.value, 'Other')
)

INSUARANCE_TYPE_CHOICE = (
    (InsuranceTypes.PRIMARY.value, 'Primary Insurance'),
    (InsuranceTypes.SECONDARY.value, 'Secondary Insuarnce'),
    (InsuranceTypes.OTHER.value, 'Other')
)

INSURANCE_PAYER_CHOICE = (
    (InsurancePayer.CIGNA_62308.value, 'cigna 62308'),
    (InsurancePayer.AETNA_HEALTHCARE_60054.value, 'aetna healthcare 60054'),
    (InsurancePayer.BLUE_SHIELD_OF_CALIFORNIA_940360524.value, 'blue shield of california')
)

CLIENT_BILLING_TYPE = (
    (ClientBillingType.SELF_PAY.value, 'Self pay'),
    (ClientBillingType.INSURANCE.value, 'Insurance')
)

CLIENT_TYPE = (
    (ClientType.INDIVIDUAL.value, 'individual'),
    (ClientType.COUPLE.value, 'couple'),
    (ClientType.GROUP.value, 'group')
)

PRIMARY_INSURED_CHOICE = (
    (PrimaryInsured.CLIENT.value, 'Client'),
    (PrimaryInsured.CLIENT_SPOUSE.value, "Client's Spouse"),
    (PrimaryInsured.CLIENT_PARENT.value, "Client's Parent"),
    (PrimaryInsured.OTHER.value, 'Other')
)